↳ ITRS
↳ ITRStoIDPProof
z
if(FALSE, u, v) → v
fNat(TRUE, x, y) → f(>@z(x, y), trunc(x), +@z(y, 1@z))
trunc(x) → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))
if(TRUE, u, v) → u
f(TRUE, x, y) → fNat(&&(>=@z(x, 0@z), >=@z(y, 0@z)), x, y)
if(FALSE, x0, x1)
fNat(TRUE, x0, x1)
trunc(x0)
if(TRUE, x0, x1)
f(TRUE, x0, x1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
z
if(FALSE, u, v) → v
fNat(TRUE, x, y) → f(>@z(x, y), trunc(x), +@z(y, 1@z))
trunc(x) → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))
if(TRUE, u, v) → u
f(TRUE, x, y) → fNat(&&(>=@z(x, 0@z), >=@z(y, 0@z)), x, y)
(0) -> (3), if ((x[0] →* x[3]))
(1) -> (2), if ((trunc(x[1]) →* x[2])∧(+@z(y[1], 1@z) →* y[2])∧(>@z(x[1], y[1]) →* TRUE))
(2) -> (0), if ((x[2] →* x[0])∧(y[2] →* y[0])∧(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)) →* TRUE))
(2) -> (1), if ((x[2] →* x[1])∧(y[2] →* y[1])∧(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)) →* TRUE))
if(FALSE, x0, x1)
fNat(TRUE, x0, x1)
trunc(x0)
if(TRUE, x0, x1)
f(TRUE, x0, x1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
z
if(FALSE, u, v) → v
trunc(x) → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))
if(TRUE, u, v) → u
(0) -> (3), if ((x[0] →* x[3]))
(1) -> (2), if ((trunc(x[1]) →* x[2])∧(+@z(y[1], 1@z) →* y[2])∧(>@z(x[1], y[1]) →* TRUE))
(2) -> (0), if ((x[2] →* x[0])∧(y[2] →* y[0])∧(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)) →* TRUE))
(2) -> (1), if ((x[2] →* x[1])∧(y[2] →* y[1])∧(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)) →* TRUE))
if(FALSE, x0, x1)
fNat(TRUE, x0, x1)
trunc(x0)
if(TRUE, x0, x1)
f(TRUE, x0, x1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDPNonInfProof
z
if(FALSE, u, v) → v
trunc(x) → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))
if(TRUE, u, v) → u
(1) -> (2), if ((trunc(x[1]) →* x[2])∧(+@z(y[1], 1@z) →* y[2])∧(>@z(x[1], y[1]) →* TRUE))
(2) -> (1), if ((x[2] →* x[1])∧(y[2] →* y[1])∧(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)) →* TRUE))
if(FALSE, x0, x1)
fNat(TRUE, x0, x1)
trunc(x0)
if(TRUE, x0, x1)
f(TRUE, x0, x1)
(1) (>@z(x[1], y[1])=TRUE∧+@z(y[1], 1@z)=y[2]∧trunc(x[1]1)=x[2]1∧+@z(y[1]1, 1@z)=y[2]1∧x[2]=x[1]1∧>@z(x[1]1, y[1]1)=TRUE∧trunc(x[1])=x[2]∧y[2]=y[1]1∧&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z))=TRUE ⇒ FNAT(TRUE, x[1]1, y[1]1)≥NonInfC∧FNAT(TRUE, x[1]1, y[1]1)≥F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥))
(2) (>@z(x[1], y[1])=TRUE∧>@z(x[2], +@z(y[1], 1@z))=TRUE∧if(=@z(%@z(x[1], 2@z), 0@z), x[1], -@z(x[1], 1@z))=x[2]∧>=@z(x[2], 0@z)=TRUE∧>=@z(+@z(y[1], 1@z), 0@z)=TRUE ⇒ FNAT(TRUE, x[2], +@z(y[1], 1@z))≥NonInfC∧FNAT(TRUE, x[2], +@z(y[1], 1@z))≥F(>@z(x[2], +@z(y[1], 1@z)), trunc(x[2]), +@z(+@z(y[1], 1@z), 1@z))∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥))
(3) (x[1] + -1 + (-1)y[1] ≥ 0∧-2 + x[2] + (-1)y[1] ≥ 0∧x[2] ≥ 0∧1 + y[1] ≥ 0 ⇒ (UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧-1 + (-1)Bound + x[2] + (-1)y[1] ≥ 0∧0 ≥ 0)
(4) (x[1] + -1 + (-1)y[1] ≥ 0∧-2 + x[2] + (-1)y[1] ≥ 0∧x[2] ≥ 0∧1 + y[1] ≥ 0 ⇒ (UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧-1 + (-1)Bound + x[2] + (-1)y[1] ≥ 0∧0 ≥ 0)
(5) (-2 + x[2] + (-1)y[1] ≥ 0∧1 + y[1] ≥ 0∧x[1] + -1 + (-1)y[1] ≥ 0∧x[2] ≥ 0 ⇒ -1 + (-1)Bound + x[2] + (-1)y[1] ≥ 0∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧0 ≥ 0)
(6) (-1 + x[2] + (-1)x[1] + y[1] ≥ 0∧x[1] + (-1)y[1] ≥ 0∧y[1] ≥ 0∧x[2] ≥ 0 ⇒ (-1)Bound + x[2] + (-1)x[1] + y[1] ≥ 0∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧0 ≥ 0)
(7) (-1 + x[2] + (-1)x[1] ≥ 0∧x[1] ≥ 0∧y[1] ≥ 0∧x[2] ≥ 0 ⇒ (-1)Bound + x[2] + (-1)x[1] ≥ 0∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧0 ≥ 0)
(8) (x[2] ≥ 0∧x[1] ≥ 0∧y[1] ≥ 0∧1 + x[1] + x[2] ≥ 0 ⇒ 1 + (-1)Bound + x[2] ≥ 0∧(UIncreasing(F(>@z(x[1]1, y[1]1), trunc(x[1]1), +@z(y[1]1, 1@z))), ≥)∧0 ≥ 0)
(9) (F(TRUE, x[2], y[2])≥NonInfC∧F(TRUE, x[2], y[2])≥FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])∧(UIncreasing(FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])), ≥))
(10) ((UIncreasing(FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])), ≥)∧0 ≥ 0∧0 ≥ 0)
(11) ((UIncreasing(FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])), ≥)∧0 ≥ 0∧0 ≥ 0)
(12) ((UIncreasing(FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])), ≥)∧0 ≥ 0∧0 ≥ 0)
(13) (0 = 0∧0 = 0∧0 = 0∧(UIncreasing(FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])), ≥)∧0 ≥ 0∧0 ≥ 0∧0 = 0)
POL(-@z(x1, x2)) = x1 + (-1)x2
POL(0@z) = 0
POL(TRUE) = -1
POL(&&(x1, x2)) = -1
POL(2@z) = 2
POL(FALSE) = 1
POL(F(x1, x2, x3)) = x2 + (-1)x3
POL(>@z(x1, x2)) = -1
POL(=@z(x1, x2)) = -1
POL(if(x1, x2, x3)) = max{x2, x3}
POL(>=@z(x1, x2)) = -1
POL(+@z(x1, x2)) = x1 + x2
POL(trunc(x1)) = x1
POL(1@z) = 1
POL(undefined) = -1
POL(FNAT(x1, x2, x3)) = -1 + (-1)x1 + x2 + (-1)x3
FNAT(TRUE, x[1], y[1]) → F(>@z(x[1], y[1]), trunc(x[1]), +@z(y[1], 1@z))
FNAT(TRUE, x[1], y[1]) → F(>@z(x[1], y[1]), trunc(x[1]), +@z(y[1], 1@z))
F(TRUE, x[2], y[2]) → FNAT(&&(>=@z(x[2], 0@z), >=@z(y[2], 0@z)), x[2], y[2])
FALSE1 → &&(FALSE, FALSE)1
-@z1 ↔
if(FALSE, u, v)1 → v1
if(TRUE, u, v)1 → u1
trunc(x)1 → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))1
TRUE1 → &&(TRUE, TRUE)1
+@z1 ↔
FALSE1 → &&(FALSE, TRUE)1
FALSE1 → &&(TRUE, FALSE)1
%@z1 →
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
z
if(FALSE, u, v) → v
trunc(x) → if(=@z(%@z(x, 2@z), 0@z), x, -@z(x, 1@z))
if(TRUE, u, v) → u
if(FALSE, x0, x1)
fNat(TRUE, x0, x1)
trunc(x0)
if(TRUE, x0, x1)
f(TRUE, x0, x1)